package com.feri.findlife.third;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.feri.findlife.config.SystemConfig;

import java.io.ByteArrayInputStream;
import java.util.Calendar;

/**
 * @program: FindLife
 * @description:
 * @author: Feri(邢朋辉)
 * @create: 2020-12-23 14:38
 */
public class AliOssUtil {

    // Endpoint以杭州为例，其它Region请按实际情况填写。
    public static String endpoint = "https://oss-cn-beijing.aliyuncs.com";
    // 阿里云主账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维，请登录RAM控制台创建RAM账号。
    public static String accessKeyId = "LTAI4GFbFXCbP19wDjbdu6dy";
    public static String accessKeySecret = "gpxxP6s5HZMXlsuxFV7spNjBhDjGl4";
    private static OSS client; //Oss客户端对象
    //静态代码块- 实例化静态属性
    static {
        client= new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
    }

    //文件上传
    /**
     * 实现文件的存储-阿里云oss
     * @param bname 存储空间名称
     * @param objname 对象名称
     * @param data 要存储的内容*/
    public static String upload(String bname,String objname,byte[] data){
        //实现文件的上传
        /**
         * 上传文件内容
         * 参数说明
         * 1.存储空间名称
         * 2.存储的对象名称 唯一
         * 3.存储的内容*/
        client.putObject(bname,objname,new ByteArrayInputStream(data));
        //生成访问路径
        return createURL(bname,objname, SystemConfig.OSS_URLTIME);
    }
    //文件的访问名
    /**
     * 参数说明
     * @param bname 存储空间名称
     * @param oname 对象名称
     * @param seconds 访问链接的有效期
     * @return 访问链接*/
    public static String createURL(String bname,String oname,int seconds){
        //实例化日历对象，从而进行时间的设置
        Calendar calendar=Calendar.getInstance();
        //添加指定的秒数
        calendar.add(Calendar.SECOND,seconds);
        //生成访问链接
        return client.generatePresignedUrl(bname,oname,calendar.getTime()).toString();
    }



}
